1.1 关闭防火墙等网络服务
# 关闭服务
systemctl stop firewalld
systemctl stop NetworkManager

# 禁止开机启动
systemctl disable firewalld
systemctl disable NetworkManager

# 修改selinux配置
vim /etc/selinux/config
SELINUX=disabled
1
2
3
4
5
6
7
8
9
10
11
1.2 安装依赖和 Packstack
yum -y install http://rdo.fedorapeople.org/rdo-release.rpm
yum -y install openstack-packstack
1
2
1.3 一键安装 OpenStack
单节点
在packstack命令后，使用—allinonec参数在本机上部署所有服务。

packstack --allinone

1
2
多节点
使用—install-hosts参数来运行packstack，该参数值是由一个逗号隔开的IP地址列表。

packstack --install-hosts=CONTROLLER_ADDRESS,NODE_ADDRESSES


步骤1：主机名并更新/ETC/HOSTS文件
打开终端并使用以下hostnamectl命令设置主机名，

[root@localhost ~]# hostnamectl set-hostname "openstack.example.com"
[root@localhost ~]# exec bash
使用echo命令运行，以在/etc/hosts文件中添加本地解析。

[root@openstack ~]# echo -e "192.168.1.8\topenstack.example.com" >> /etc/hosts

步骤2：禁用NETWORKMANAGER并使用NETWORK-SCRIPTS配置网络
Network-Manager是CentOS 8中用于管理网络的默认工具，但是对于openstack，我们必须禁用它，因为openstack网络无法与network-manager一起正常工作。为了替换NetworkManager，我们必须安装network-scripts。

要禁用network-manager，请运行以下命令，

[root@openstack ~]# systemctl disable NetworkManager
[root@openstack ~]# systemctl stop NetworkManager
运行以下dnf命令以安装network-scripts，

[root@openstack ~]# dnf install network-scripts -y
一旦安装了network-scripts软件包，我们就可以使用本机network.service管理网络（ifcfg- *文件）。

现在，让我们在ifcfg-enp0s3文件中配置IP地址并启动网络服务，

root@openstack ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3


保存并退出文件，然后使用以下命令启动网络服务，

[root@openstack ~]# systemctl start network
[root@openstack ~]# systemctl enable network
现在，使用ip命令验证是否已将IP分配给NIC（enp0s3），

[root@openstack ~]# ip a s enp0s3



步骤3：启用OPENSTACK REPOSITORIES并安装PACKSTACK工具
在撰写本文时，victoria openstack已经稳定可用，因此请运行以下命令来配置其repositories，

需要启用 powertools 包，这个是 开发者用到的包, elep 的包很多都需要

[root@openstack ~]# dnf config-manager --enable powertools
[root@openstack ~]# dnf install -y centos-release-openstack-victoria
现在，安装所有可用的更新并重新启动系统，

[root@openstack ~]# dnf update -y
[root@openstack ~]# reboot

重新启动后，登录系统，执行以下dnf命令安装packstack工具。

缺少一个 rubygem 的库
wget http://mirror.nju.edu.cn/cc/s8.2022.2/cloud/aarch64/openstack-wallaby/Packages/r/rubygem-semantic_puppet-1.0.2-2.el8.noarch.rpm

rpm -ivh rubygem-semantic_puppet-1.0.2-2.el8.noarch.rpm

安装 不了网络时出错
dnf --enablerepo=powertools install libaec
dnf install python3-nova

报找不到依赖包python3-pyxattr和python3-httplib2

dnf --enablerepo=powertools install python3-pyxattr -y
dnf --enablerepo=powertools install python3-httplib2 -y
1
2

#安装时出现  cannot import name 'joinedload_all' 

pip3 install 'sqlalchemy<1.4'


[root@openstack ~]# dnf install -y openstack-packstack

步骤4：生成答案文件并使用PACKSTACK安装OPENSTACK
使用packstack命令生成应答文件，

[root@openstack ~]# packstack --gen-answer-file /root/openstack-answer.txt
生成应答文件后，使用vi编辑器编辑以下参数，

[root@openstack ~]# vi /root/openstack-answer.txt
..............
CONFIG_HEAT_INSTALL=y
CONFIG_PROVISION_DEMO=n
CONFIG_KEYSTONE_ADMIN_PW=P@ssw0rd
CONFIG_NEUTRON_OVN_BRIDGE_IFACES=br-ex:enp0s3
..............
保存并退出文件。

根据您的设置替换接口名称（enp0s3）。

注意：默认的“租户”网络类型的驱动器设置为“ genve ”，默认的neutron类型的驱动器设置为“ genve 和 flat ”。如果希望更改这些默认参数，请更新应答文件中的以下几行。在此演示中，我将不更新这些参数。

CONFIG_NEUTRON_ML2_TYPE_DRIVERS=geneve,flat
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=geneve
运行以下命令以使用应答文件开始openstack部署。

[root@openstack ~]# packstack --answer-file /root/openstack-answer.txt
部署大约需要20到30分钟，具体取决于您系统的硬件和互联网速度。成功安装后，我们将获得以下信息：



现在，验证是否已将来自enp03接口的IP分配给网桥br-ex，并确认是否已将接口enp0s3作为端口添加到ovs-bridge中。

运行以下命令：

新建admin-openrc.sh（目录位置不重要，记住位置就行），内容如下，记得修改OS_PASSWORD的值，我的是123123

cat admin-openrc.sh <<EOF
export OS_USERNAME=admin
export OS_PASSWORD=123123
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
<<EOF
source admin-openrc.sh
